package lkx.demo.test6._02args;

/**
 * 可变个数形参的方法(jdk5.0)
 *
 * 1. 使用场景
 * 在调用方法时，可能会出现方法形参的类型是确定的，但是参数的个数不确定。此时，我们就可以使用可变个数形参的方法
 *
 * 2. 格式：(参数类型 ... 参数名)
 *
 *
 * 3. 说明：
 * ① 可变个数形参的方法在调用时，针对于可变的形参赋的实参的个数可以为：0个、1个或多个
 * ② 可变个数形参的方法与同一个类中，同名的多个方法之间可以构成重载
 * ③ 特例：可变个数形参的方法与同一个类中方法名相同，且与可变个数形参的类型相同的数组参数不构成重载。
 * ④ 可变个数的形参必须声明在形参列表的最后
 * ⑤ 可变个数的形参最多在一个方法的形参列表中出现一次
 * @author kunxianli
 * @date 2024/02/02 16:51
 **/
public class TestArgs {

    public static void main(String[] args) {
        TestArgs testArgs = new TestArgs();
//        可变个数形参的方法在调用时，针对于可变的形参赋的实参的个数可以为：0个、1个或多个
        testArgs.print();
        testArgs.print("zhangsan");
        testArgs.print("zhangsan","lisi","wangwu");

        testArgs.print(1,"1111");
    }


//    ② 可变个数形参的方法与同一个类中，同名的多个方法之间可以构成重载
    public void print(String ... names){
        for(int i = 0 ; i < names.length ; i++){
            System.out.println(names[i]);
        }
    }

//    ② 可变个数形参的方法与同一个类中，同名的多个方法之间可以构成重载
    public void print(int number,String ... names){
        System.out.println(111111);
        for(int i = 0 ; i < names.length ; i++){
            System.out.println(number+":"+names[i]);
        }
    }

//    ③ 特例：可变个数形参的方法与同一个类中方法名相同，且与可变个数形参的类型相同的数组参数不构成重载。
//    print(String ... names) 和 public void print(String[] name) 被认为是相同方法，会报错
//    public void print(String[] name){
//
//    }


    public void print(int number){
        System.out.println(2222);
        System.out.println(number);
    }

//    ④ 可变个数的形参必须声明在形参列表的最后
//        public void print(int ... nums,int i){ //报错
//
//    }

//    ⑤ 可变个数的形参最多在一个方法的形参列表中出现一次
//    public void print(int ... number,String ... name){ // 报错
//        System.out.println(2222);
//        System.out.println(number);
//    }

}
